package pe.com.bbva.efcap.servidor.modelo.entidad;

import java.io.Serializable;
import javax.persistence.*;

import java.sql.Timestamp;
import java.math.BigDecimal;
import java.util.List;


/**
 * The persistent class for the TEF003_INDICADOR database table.
 * 
 */
@Entity
@Table(name="TEF003_INDICADOR")
public class Indicador implements Serializable {
	private static final long serialVersionUID = 1L;
	private long idIndicador;
	private String codigo;
	private String codigoCuenta;
	private Timestamp fechaActualizacion;
	private Timestamp fechaCreacion;
	private String descripcion;
	private BigDecimal orden;
	private BigDecimal editable;
	private BigDecimal estado;
	private String formula0;
	private String formulaI;
	private String formulaN;
	private String formulaPorcentual;
	private String usuarioActualizacion;
	private String usuarioCreacion;
	private List<DetalleEstadoFinanciero> detalleEstadoFinancieros;
	private ParametroGeneral tipoUnidad;
	private ParametroGeneral tipoCatalogo;
	private ParametroGeneral tipoTipo;
	private List<DependenciaIndicador> indicadores1;
	private List<DependenciaIndicador> indicadores2;
	private List<DetalleSimulacion> detalleSimulaciones;
	private List<IndicadorValorDefecto> indicadorValorDefectos;

	public Indicador() {
	}


	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SQ_INDICADOR")
	@SequenceGenerator(sequenceName="SQ_INDICADOR", name = "SQ_INDICADOR", allocationSize = 0)	
	@Column(name="CD_INDICADOR")
	public long getIdIndicador() {
		return this.idIndicador;
	}

	public void setIdIndicador(long idIndicador) {
		this.idIndicador = idIndicador;
	}


	@Column(name="CD_CODIGO")
	public String getCodigo() {
		return this.codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}


	@Column(name="FH_ACTUALIZACION")
	public Timestamp getFechaActualizacion() {
		return this.fechaActualizacion;
	}

	public void setFechaActualizacion(Timestamp fechaActualizacion) {
		this.fechaActualizacion = fechaActualizacion;
	}


	@Column(name="FH_CREACION")
	public Timestamp getFechaCreacion() {
		return this.fechaCreacion;
	}

	public void setFechaCreacion(Timestamp fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}


	@Column(name="NB_DESCRIPCION")
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}


	@Column(name="NU_ORDEN")
	public BigDecimal getOrden() {
		return this.orden;
	}

	public void setOrden(BigDecimal orden) {
		this.orden = orden;
	}


	@Column(name="ST_EDITABLE")
	public BigDecimal getEditable() {
		return this.editable;
	}

	public void setEditable(BigDecimal editable) {
		this.editable = editable;
	}


	@Column(name="ST_ESTADO")
	public BigDecimal getEstado() {
		return this.estado;
	}

	public void setEstado(BigDecimal estado) {
		this.estado = estado;
	}


	@Column(name="TX_FORMULA_0")
	public String getFormula0() {
		return this.formula0;
	}

	public void setFormula0(String formula0) {
		this.formula0 = formula0;
	}


	@Column(name="TX_FORMULA_I")
	public String getFormulaI() {
		return this.formulaI;
	}

	public void setFormulaI(String formulaI) {
		this.formulaI = formulaI;
	}


	@Column(name="TX_FORMULA_N")
	public String getFormulaN() {
		return this.formulaN;
	}

	public void setFormulaN(String formulaN) {
		this.formulaN = formulaN;
	}


	@Column(name="TX_FORMULA_PORC")
	public String getFormulaPorcentual() {
		return this.formulaPorcentual;
	}

	public void setFormulaPorcentual(String formulaPorcentual) {
		this.formulaPorcentual = formulaPorcentual;
	}


	@Column(name="TX_USU_ACTUALIZAC")
	public String getUsuarioActualizacion() {
		return this.usuarioActualizacion;
	}

	public void setUsuarioActualizacion(String usuarioActualizacion) {
		this.usuarioActualizacion = usuarioActualizacion;
	}


	@Column(name="TX_USU_CREACION")
	public String getUsuarioCreacion() {
		return this.usuarioCreacion;
	}

	public void setUsuarioCreacion(String usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}


	//bi-directional many-to-one association to DetEstadoFinanciero
	@OneToMany(mappedBy="indicador")
	public List<DetalleEstadoFinanciero> getDetalleEstadoFinancieros() {
		return this.detalleEstadoFinancieros;
	}

	public void setDetalleEstadoFinancieros(List<DetalleEstadoFinanciero> detalleEstadoFinancieros) {
		this.detalleEstadoFinancieros = detalleEstadoFinancieros;
	}

	public DetalleEstadoFinanciero addDetEstadoFinanciero(DetalleEstadoFinanciero detEstadoFinanciero) {
		getDetalleEstadoFinancieros().add(detEstadoFinanciero);
		detEstadoFinanciero.setIndicador(this);

		return detEstadoFinanciero;
	}

	public DetalleEstadoFinanciero removeDetEstadoFinanciero(DetalleEstadoFinanciero detEstadoFinanciero) {
		getDetalleEstadoFinancieros().remove(detEstadoFinanciero);
		detEstadoFinanciero.setIndicador(null);

		return detEstadoFinanciero;
	}


	//bi-directional many-to-one association to ParametroGeneral
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="TP_UNIDAD")
	public ParametroGeneral getTipoUnidad() {
		return this.tipoUnidad;
	}

	public void setTipoUnidad(ParametroGeneral tipoUnidad) {
		this.tipoUnidad = tipoUnidad;
	}


	//bi-directional many-to-one association to ParametroGeneral
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="TP_CATALOGO")
	public ParametroGeneral getTipoCatalogo() {
		return this.tipoCatalogo;
	}

	public void setTipoCatalogo(ParametroGeneral tipoCatalogo) {
		this.tipoCatalogo = tipoCatalogo;
	}


	//bi-directional many-to-one association to ParametroGeneral
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="TP_TIPO")
	public ParametroGeneral getTipoTipo() {
		return this.tipoTipo;
	}

	public void setTipoTipo(ParametroGeneral tipoTipo) {
		this.tipoTipo = tipoTipo;
	}


	//bi-directional many-to-one association to DepIndicad
	@OneToMany(mappedBy="indicador1")
	public List<DependenciaIndicador> getIndicadores1() {
		return this.indicadores1;
	}

	public void setIndicadores1(List<DependenciaIndicador> indicadores1) {
		this.indicadores1 = indicadores1;
	}

	public DependenciaIndicador addIndicadores1(DependenciaIndicador indicadores1) {
		getIndicadores1().add(indicadores1);
		indicadores1.setIndicador1(this);

		return indicadores1;
	}

	public DependenciaIndicador removeIndicadores1(DependenciaIndicador indicadores1) {
		getIndicadores1().remove(indicadores1);
		indicadores1.setIndicador1(null);

		return indicadores1;
	}


	//bi-directional many-to-one association to DepIndicad
	@OneToMany(mappedBy="indicador2")
	public List<DependenciaIndicador> getIndicadores2() {
		return this.indicadores2;
	}

	public void setIndicadores2(List<DependenciaIndicador> indicadores2) {
		this.indicadores2 = indicadores2;
	}

	public DependenciaIndicador addIndicadores2(DependenciaIndicador indicadores2) {
		getIndicadores2().add(indicadores2);
		indicadores2.setIndicador2(this);

		return indicadores2;
	}

	public DependenciaIndicador removeIndicadores2(DependenciaIndicador indicadores2) {
		getIndicadores2().remove(indicadores2);
		indicadores2.setIndicador2(null);

		return indicadores2;
	}


	//bi-directional many-to-one association to DetSimulacs
	@OneToMany(mappedBy="indicador")
	public List<DetalleSimulacion> getDetalleSimulaciones() {
		return this.detalleSimulaciones;
	}

	public void setDetalleSimulaciones(List<DetalleSimulacion> detalleSimulaciones) {
		this.detalleSimulaciones = detalleSimulaciones;
	}

	public DetalleSimulacion addDetSimulac(DetalleSimulacion detSimulac) {
		getDetalleSimulaciones().add(detSimulac);
		detSimulac.setIndicador(this);

		return detSimulac;
	}

	public DetalleSimulacion removeDetSimulac(DetalleSimulacion detSimulac) {
		getDetalleSimulaciones().remove(detSimulac);
		detSimulac.setIndicador(null);

		return detSimulac;
	}


	//bi-directional many-to-one association to IndValDef
	@OneToMany(mappedBy="indicador")
	public List<IndicadorValorDefecto> getIndicadorValorDefectos() {
		return this.indicadorValorDefectos;
	}

	public void setIndicadorValorDefectos(List<IndicadorValorDefecto> indicadorValorDefectos) {
		this.indicadorValorDefectos = indicadorValorDefectos;
	}

	public IndicadorValorDefecto addIndValDef(IndicadorValorDefecto indValDef) {
		getIndicadorValorDefectos().add(indValDef);
		indValDef.setIndicador(this);

		return indValDef;
	}

	public IndicadorValorDefecto removeIndValDef(IndicadorValorDefecto indValDef) {
		getIndicadorValorDefectos().remove(indValDef);
		indValDef.setIndicador(null);

		return indValDef;
	}


	@Column(name="CD_COD_CUENTA")
	public String getCodigoCuenta() {
		return codigoCuenta;
	}


	public void setCodigoCuenta(String codigoCuenta) {
		this.codigoCuenta = codigoCuenta;
	}


	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("Indicador [idIndicador=");
		builder.append(idIndicador);
		builder.append(", codigo=");
		builder.append(codigo);
		builder.append(", codigoCuenta=");
		builder.append(codigoCuenta);
		builder.append(", descripcion=");
		builder.append(descripcion);
		builder.append(", orden=");
		builder.append(orden);
		builder.append(", editable=");
		builder.append(editable);
		builder.append(", estado=");
		builder.append(estado);
		builder.append(", formula0=");
		builder.append(formula0);
		builder.append(", formulaI=");
		builder.append(formulaI);
		builder.append(", formulaN=");
		builder.append(formulaN);
		builder.append(", formulaPorcentual=");
		builder.append(formulaPorcentual);
		builder.append("]");
		return builder.toString();
	}

	

}
